package com.ray.mapper;

import com.ray.bean.EcsMonitorBean;
import com.ray.bean.EquipmentAlarmCodeBean;
import com.ray.bean.EquipmentBean;
import com.ray.bean.EquipmentCropMobilityBean;
import com.ray.bean.EquipmentTimeRecordBean;
import com.ray.bean.MachineBean;
import com.ray.bean.MachinepRrocessCapacityBean;
import com.ray.bean.MachinepRrocessCapacityBean.DayCapacity;
import com.ray.bean.OrderBean;
import com.ray.bean.ProductionExceptionBean;
import com.ray.bean.ReportBean;
import com.ray.pojo.EquipmentBoardPojo;
import com.ray.pojo.EquipmentDetailPojo;
import com.ray.pojo.EquipmentRecordPojo;
import com.ray.pojo.ShowEquipmentPojo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 设备信息Mapper
 * <p>
 * Title: EquipmentMapper
 * </p>
 * <p>
 * Description:
 * </p>
 * 
 * @author 李斌
 * @date 2018年4月12日
 */
public interface EquipmentMapper {

	/**
	 * 新增设备信息表
	 * 
	 * @date 2018年4月12日 上午9:47:55
	 * @author 李斌
	 * @return void
	 * @throws
	 */
	int addEquipment(Map<?, ?> map);

	/**
	 * 通过设备的详细信息获取设备
	 * 
	 * @date 2018年4月12日 上午10:09:23
	 * @author 李斌
	 * @return EquipmentBean
	 * @throws
	 */
	List<EquipmentBean> getEquipmentByDetail(Map<?, ?> map);

	/**
	 * 修改设备信息
	 * 
	 * @date 2018年4月12日 下午2:04:09
	 * @author 李斌
	 * @return void
	 * @throws
	 */
	int updateEquipment(Map<?, ?> map);

	/**
	 * 获取设备信息数据总条数
	 * 
	 * @date 2018年4月12日 下午2:34:05
	 * @author 李斌
	 * @return int
	 * @throws
	 */
	int getAllEquipmentCount(Map<?, ?> map);

	/**
	 * 获取所有的设备信息,可通过部门或者车间查询
	 * 
	 * @date 2018年4月12日 下午2:48:20
	 * @author 李斌
	 * @return List<EquipmentBean>
	 * @throws
	 */
	List<EquipmentBean> getAllEquipmentData(Map<?, ?> map);

	// 获取所有设备加工信息
	List<MachineBean> getAllMachine(Map<?, ?> map);

	// 校验电表是否被使用
	int ckeckEnergyId(Map<?, ?> map);

	// 获取电气监控数据
	List<EcsMonitorBean> getEcsMonitorData(Map<?, ?> map);

	// 获取电气监控条数
	int getEcsMonitorCount(Map<?, ?> map);

	// 设置机器工作状态
	void updateEquipmentState(@Param("orderSet") Set<String> orderSet,
			@Param("equipmentAction") int equipmentAction);

	// 通过定时器
	void insertEquipmentRecordBySchedule(Map<?, ?> map);

	// 获取单表machine
	List<MachineBean> getMachine(Map<?, ?> map);


	// 获取之前的生产数量
	Double getBeforeYield(Map<?, ?> map);


	// 将设备暂停
	void updateMachineSuspend(Map<?, ?> map);

	// 设置电表状态为采集状态
	void updateEnergyState(Map<?, ?> map);

	// 修改系统单号并将 状态设为0
	void updateSystemOrderNo(Map<?, ?> paramMap);

	// 通过加工单号是否相同判断机器是停止还是运行
	void updateEquipmentStateByEqual(@Param("orderSet") Set<String> orderSet);

	// 获取设备稼动率数据
	List<EquipmentCropMobilityBean> getEquipmentCropMobilityData(Map<?, ?> map);

	// 获取设备稼动率数据条数
	int getEquipmentCropMobilityCount(Map<?, ?> map);

	// 获取设备电表度数
	Double getDegeeByEquipmentNo(Map<?, ?> paramMap);

	List<EquipmentBean> getNoMainSwitchEquipment(Map<?, ?> map);

	List<EquipmentBean> selectAllEquiptmentByControlSwitchId(
			@Param("airFlowControlId") String airFlowControlId);

	// 根据设备编号获取machine对象
	MachineBean getMachineByEquipmentNo(@Param("equipmentNo") String equipmentNo);

	EquipmentBean getEquipmentByMachineId(@Param("machineId") String machineId);

	List<ShowEquipmentPojo> getAllShowEquipmentPojo(Map<?, ?> map);

	Map<String, Object> getNumberOfThrowStuffByEquipmentNo(@Param("orderNo") String orderNo, @Param("company") String company);

	List<EquipmentBoardPojo> getAllEquipmentBoard(Map<?, ?> map);
//	List<EquipmentBoardPojo> getAllEquipmentBoard(@Param("company") String company,@Param("startOfMonth")String startOfMonth);
	List<EquipmentBoardPojo> getMachineUseElectric(Map<?, ?> map);

    List<EquipmentDetailPojo> getEquipmentsDetail();

	int insertMachine(@Param("equipmentNo") String equipmentNo, @Param("company") String company);

	void removeEquipmentAndRecodes(EquipmentBean equipmentBean);

	//获取设备总价
	double getAllEquipmentPrice(Map<?, ?> map);

	/**
	 * 获取设备日利用率
	 * @param map
	 * @return
	 */
	List<EquipmentBoardPojo> getEquipmentDailyUseRate(Map<?, ?> map);

	/**
	 * 获取设备月利用率
	 * @param map
	 * @return
	 */
	List<EquipmentBoardPojo> getEquipmentMonthUseRate(Map<?, ?> map);

	/**
	 * 
	 * @param internetId
	 * @return
	 */
//	List<EquipmentBean> getInternetRelation(@Param("internetId")String internetId);

	/**
	 * 获取所有的设备编号及对应的物联网卡id
	 * @return
	 */
	List<EquipmentBean> checkIsHave();

	/**
	 * 通过物联网卡编号获取
	 * @param internetThingsCard
	 * @return
	 */
	String getEquimentNoByInternetThingsCard(@Param("internetThingsCard")String internetThingsCard);

	/**
	 * 获取设备警报详情
	 * @param map
	 * @return
	 */
	List<EquipmentAlarmCodeBean> getEquipmentAlarmCode(Map<?, ?> map);

	/**
	 * 添加设备警报详情
	 * @param list
	 * @return
	 */
	int addEquipmentAlarmCode(Map<?, ?> map);

	/**
	 * 删除设备警报详情
	 * @param list
	 */
	void deleteEquipmentAlarmCode(Map<?, ?> map);

	/**
	 * 获取设备警报信息
	 * @return
	 */
	List<EquipmentAlarmCodeBean> getAllEquimentAlarmDetail();

	/**
	 * 获取设备当日加工时间
	 * @return
	 */
	List<EquipmentBoardPojo> getEquimentTotalTimeOfDay();

	/**
	 * 获取设备产能
	 * @param map
	 * @return
	 */
	List<ProductionExceptionBean> getMachineCapacity(Map map);

	/**
	 * 获取设备工序产能
	 * @param map
	 * @return
	 */
	List<MachinepRrocessCapacityBean> getMachieProcessCapacity(Map map);

	/**
	 * 修改警报信息
	 * @param map
	 * @return
	 */
	int updateEquipmentAlarmCode(Map map);

	/**
	 * 获取工序能耗信息
	 * @param map
	 * @return
	 */
	List<EquipmentBoardPojo> getProcessConsumptionData(Map map);

	/**
	 * 获取设备当月产能
	 * @param map
	 * @return
	 */
	List<DayCapacity> getEquipmentMonthCapacityDatail(Map map);

	/**
	 * 获取设备产能
	 * @return
	 */
	List<EquipmentRecordPojo> getRecordData();

	/**
	 * 设备清零时插入记录
	 * @param insertMaps
	 */
	void insertEquipmentRecordByDifferent(@Param("insertMaps")List<Map> insertMaps);

	/**
	 * 获取跨天（没有结束时间的记录）
	 * @return
	 */
	List<EquipmentTimeRecordBean> getNotHaveEndTimeEquipmentRecord();

	/**
	 * 设置设备运行结束时间
	 * @param idList
	 * @param toDayStartTime
	 */
	void updateEquipmentTimeReordEndTime(@Param("idList")List<String> idList, @Param("toDayStartTime")String toDayStartTime);

	/**
	 * 插入新的设备运行时间
	 * @param list
	 * @param toDayStartTime
	 */
	void insertEquipmentTimeReordStartTime(@Param("list")List<EquipmentTimeRecordBean> list,@Param("toDayStartTime") String toDayStartTime);

	/**
	 * 统计设备运行时间
	 */
	void statisticsEquipmentTime();

	/**
	 * 统计设备产能
	 * @param returnList
	 */
	void statisticsEquipmentCapacity(@Param("list")List<EquipmentRecordPojo> returnList);

	/**
	 * 统计设备工序产能
	 * @param subList
	 */
	void statisticsEquipmentProcessCapacity(@Param("list")List<EquipmentRecordPojo> subList);

	/**
	 * 获取当日设备加工记录
	 * @return
	 */
	List<EquipmentRecordPojo> getToDayRecordData();

	/**
	 * 获取
	 * @return
	 */
	List<String> getEquipmentReportProcessId();

	/**
	 * 获取
	 * @param orderId
	 * @return
	 */
	OrderBean getOrderData(@Param("orderId")String orderId);

	/**
	 * 获取工序和订单报工情况
	 * @param processId
	 * @param orderId
	 * @return
	 */
	ReportBean getOrderProcessReport(@Param("processId")String processId,@Param("orderId") String orderId);

	/**
	 * 
	 * @param reportList
	 */
	void insertEquipmentReport(@Param("reportList")List<ReportBean> reportList);



	
}
